package com.example.demo.service;

import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;
import java.util.Date;

@Service
public class VerifyService {

    // session中存储验证码的键
    private static final String CAPTCHA_KEY = "verify_key";
    // session中存储验证码创建时间的键
    private static final String CAPTCHA_DATE = "verify_date";
    // 验证码有效时间（单位：ms）
    private static final Integer EFFECTIVE_TIME = 1000 * 60 * 10;

    /**
     * 业务逻辑层：
     *   校验验证码*/
    public Boolean captchaCheck(String verifyCode, HttpSession session) {
        // 保存正确的验证码
        String saveVerifyCode = (String) session.getAttribute(CAPTCHA_KEY);
        // 保存验证码生成时间
        Date savaDate = (Date) session.getAttribute(CAPTCHA_DATE);

        // 验证码校验
        // -- 非空校验
        if("".equals(verifyCode)) {
            return false;
        }
        // -- 正确性校验:验证码一致，且在有效期内
        return verifyCode.equals(saveVerifyCode) && ((System.currentTimeMillis() - savaDate.getTime()) < EFFECTIVE_TIME);
    }
}
